// packageGoods/pages/mychat/testAI/index.js

//import SSE_WX from '../../model/testAI';

// const {
//   SSE_WX
// } = require('../../sell/search/testAI');

const {
  SSE_WX
} = require('/MyAI');

//获取应用实例
const app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    autosize1: {
      maxHeight: 1000,
      minHeight: 360,
    },
    autosize2: {
      maxHeight: 120,
      minHeight: 20,
    },
    dataContent: '', // 回答
    askContent: '', // 问题
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 操作日志记录
    app.api.log({
      title: 'AI助手',
      message: 'success',
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    // 检验是否登录
    app.checkLogin();
    // 获取身份权限
    this.setData({
      userIdentity: app.globalData.userIdentity
    });

    console.log('2132-onReady')
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    console.log('2132-onShow')
    this.getTabBar().init(); // 菜单tab页
  },
  handleInputChange(e) {
    // 取出实时的变量值
    let value = e.detail.value;
    let fieldName = e.target.dataset.fieldName;
    console.log('handleInputChange', e);
    console.log('handleInputChange', value);
    console.log('handleInputChange', fieldName);
    this.setData({
      [`${fieldName}`]: value
    })
  },
  // 提交订单
  testAI() {
    console.log('testAI');



    // const {
    //   SSE_WX
    // } = require('../../testAI');
    const askContent = this.data.askContent;
    console.log(askContent)
    // const askContent = "药品销售中查询品名为开塞露（含甘油）的药品销售时间2024年7月在各部门的销售数量和销售金额汇总？";

    SSE_WX({
      url: '/v1/qbot/chat/sse',
      pData: {
        "session_id": "a29bae68-cb1c-489d-8097-6be78f136a10",
        "bot_app_key": "wWyoNsgkeVwpwJnaRxCItIwsYPqzEJBHGOigsFUQSFDkfOAQivXcZCISbObgGEySRTeWSHVUgLHMIriOKAleAREAohbnlXGeLGlFPyViecLyPunELQpBrrfLmdUZxmWJ",
        "visitor_biz_id": "a29bae68-cb1c-489d-8097-6be78f136acf",
        "content": askContent,
        "incremental": true,
        "streaming_throttle": 10,
        "visitor_labels": [],
        "custom_variables": {}
      },
      success: (data) => {
        console.log('收到数据:', data)
        this.setData({
          dataContent: data
        });
      },
      error: (err) => console.error('错误:', err),
      finish: (res) => console.log('完成:', res)
    })
    //.abort() // 可随时中断

    // const requestTask = wx.request({
    //   url: `https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse`,
    //   header: {
    //     "Content-Type": "application/json",
    //   },
    //   data: {
    //     "session_id": "a29bae68-cb1c-489d-8097-6be78f136a10",
    //     "bot_app_key": "wWyoNsgkeVwpwJnaRxCItIwsYPqzEJBHGOigsFUQSFDkfOAQivXcZCISbObgGEySRTeWSHVUgLHMIriOKAleAREAohbnlXGeLGlFPyViecLyPunELQpBrrfLmdUZxmWJ",
    //     "visitor_biz_id": "a29bae68-cb1c-489d-8097-6be78f136acf",
    //     "content": "从'药品销售'中查询一下'品名'为'二硫化硒洗剂'的药品在'销售时间'为2023年11月的销售明细，结果信息展示字段：销售时间、商品ID、品名、规格、厂商、单位、税率、零售价、销售数量、销售价、销售金额、部门编码、部门名称、部门地址、销售总单号、销售细单号、批号、有效期、批准文号、销售人员编码、销售人员名称",
    //     "incremental": true,
    //     "streaming_throttle": 10,
    //     "visitor_labels": [],
    //     "custom_variables": {}
    //   },
    //   method: "POST",
    //   timeout: '120000',
    //   enableChunked: true, // 启用分块接收
    // });
    // // 监听服务端返回的数据
    // requestTask.onChunkReceived((res) => {
    //   // Uint8Array转为text格式
    //   const arrayBuffer = res.data;
    //   let decoder = new TextDecoder("utf-8"); // 本地开发者工具使用
    //   let texts = decoder.decode(arrayBuffer); // 本地开发者工具使用
    //   // let texts = arrayBufferToString(arrayBuffer); // 真机使用

    //   // 看一下 打印出来的结果
    //   // console.log(text);
    //   texts = texts.split("\n"); // 将接收到的字符串按换行符分割成数组
    //   // 处理每个以 'data: ' 开头的字符串
    //   texts.forEach((text) => {
    //     if (text.trim().length > 0) {
    //       console.log("原始文本:", text);
    //       try {
    //         const jsonString = text.replace(/^data:\s*/, ""); // 去掉前缀
    //         // 检查 jsonString 是否有效 JSON
    //         if (
    //           jsonString.trim().startsWith("{") &&
    //           jsonString.trim().endsWith("}")
    //         ) {
    //           const jsonData = JSON.parse(jsonString);
    //           console.log(jsonData);
    //           listener(jsonData);
    //         } else {
    //           console.error("无效的 JSON 格式:", jsonString);
    //         }
    //       } catch (error) {
    //         console.error("解析 JSON 时出错:", error);
    //         console.log("原始文本:", text); // 输出原始文本以便调试
    //       }
    //     }
    //   });
    //   // listener(text)
    // });

    // requestTask.onComplete(() => {
    //   console.log("请求完成");
    //   // 这里可以处理请求完成后的逻辑
    // });

    // requestTask.onError((error) => {
    //   console.error("请求错误:", error);
    // });
    // 流式监听
    const listener = (data) => {
      // const data = JSON.parse(parsedData); // 解析接收到的数据
      // console.log("解析接收到的数据:", data);
      switch (data.event) {
        case "workflow_started":
          // 处理工作流开始事件
          console.log("工作流已开始:", data);
          break;
        case "node_started":
          // 处理节点开始事件
          console.log("节点已开始:", data);
          break;
        case "node_finished":
          // 处理节点完成事件
          console.log("节点已完成:", data);
          break;
        case "workflow_finished":
          // 处理工作流完成事件
          console.log("工作流已完成:", data);
          break;
        case "message":
          // 处理消息事件
          if (data.answer) {
            uni.hideLoading();
            // 检查list是否为空
            // 更新最新的元素
            const lastItem = list.value[list.value.length - 1];
            lastItem.returnSourceAnswer += data.answer; // 将新消息追加到最后一个元素的message中
          }
          break;
        case "message_end":
          // 处理消息结束事件
          console.log("消息结束:", data);
          loading.value = false;
          conversationId.value = data.conversation_id;
          // 更新历史记录中最新记录的 conversationId
          let history = uni.getStorageSync("searchHistory");
          if (history.length > 0) {
            history[0].conversationId = conversationId.value;
            uni.setStorageSync("searchHistory", history); // 更新存储
          }
          break;
        case "tts_message":
          // 处理文本转语音消息
          console.log("文本转语音消息:", data);
          break;
        case "tts_message_end":
          // 处理文本转语音消息结束
          console.log("文本转语音消息结束:", data);
          break;
        default:
          console.log("未知事件:", data);
      }
    };

    const arrayBufferToString = (arr) => {
      if (typeof arr === "string") {
        return arr;
      }
      var dataview = new DataView(arr);
      var ints = new Uint8Array(arr.byteLength);
      for (var i = 0; i < ints.length; i++) {
        ints[i] = dataview.getUint8(i);
      }
      var str = "",
        _arr = ints;
      for (var i = 0; i < _arr.length; i++) {
        if (_arr[i]) {
          var one = _arr[i].toString(2),
            v = one.match(/^1+?(?=0)/);
          if (v && one.length == 8) {
            var bytesLength = v[0].length;
            var store = _arr[i].toString(2).slice(7 - bytesLength);
            for (var st = 1; st < bytesLength; st++) {
              if (_arr[st + i]) {
                store += _arr[st + i].toString(2).slice(2);
              }
            }
            str += String.fromCharCode(parseInt(store, 2));
            i += bytesLength - 1;
          } else {
            str += String.fromCharCode(_arr[i]);
          }
        }
      }
      return str;
    };

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})